package estacion.persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import estacion.dominio.Persona;
import estacion.dominio.Tienda;
import estacion.dominio.Vendedor;

public class FPVendedor {

	public static void insertVendedor(Vendedor vend) throws Exception {
		
		String SQL="Insert into persona(DNI, nombre,apellido1, apellido2, contrasena, num_cuenta_corriente,horas_trabajadas,turno,horas_seguidas,codigo_tienda,email,rol) " +
			"values('"+vend.getDNI()+"','"+vend.getNombre()+"','"+vend.getApellido1()+"','"+vend.getApellido2()+"', '"+vend.getContrasena()+"'" +
			" ,"+vend.getNum_cuenta_corriente()+","+vend.getHoras_trabajadas()+",'"+vend.getTurno()+"',"+vend.getHoras_seguidas()+", '"+vend.gettienda().getCodigo_Tienda()+"', '"+vend.getEmail()+"', 'Vendedor')";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}

	//Elmina una Persona dado el dni
	public static void deleteVendedor(String dni) throws Exception {
		String SQL="Delete from persona where DNI=? and rol='Vendedor'";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			p.setString(1, dni);
			p.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}	
	}
	
	public static Vendedor consultarVendedor(String dni) throws Exception {
		Vendedor vend=null;
		String SQL="Select * from persona where DNI='"+dni+"' and rol='Vendedor'";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				vend=new Vendedor();
				vend.setDNI(r.getString("DNI"));
				vend.setNombre(r.getString("nombre"));
				vend.setApellido1(r.getString("apellido1"));
				vend.setApellido2(r.getString("apellido2"));
				vend.setNum_cuenta_corriente(r.getInt("num_cuenta_corriente"));
				vend.setContrasena(r.getString("contrasena"));
				vend.setEmail(r.getString("email"));
				vend.setRol(r.getString("rol"));
				Tienda t=new Tienda();
				t=t.consultTiendaporCodigo(r.getInt("codigo_tienda"));
				vend.settienda(t);
				vend.setHoras_trabajadas(r.getInt("horas_trabajadas"));
				vend.setHoras_seguidas(r.getInt("horas_seguidas"));
				vend.setTurno(r.getString("turno"));
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return vend;
	}
	
	public static void modificarVendedor(Vendedor vend, String dni) throws Exception{

		String SQL="UPDATE persona SET nombre='"+vend.getNombre()+"', apellido1='"+vend.getApellido1()+"', contrasena='"+vend.getContrasena()+"',apellido2='"+vend.getApellido2()+"'" +
				", num_cuenta_corriente="+vend.getNum_cuenta_corriente()+", email='"+vend.getEmail()+"'," +
				"horas_trabajadas="+vend.getHoras_trabajadas()+", horas_seguidas="+vend.getHoras_seguidas()+", turno='"+vend.getTurno()+"', codigo_tienda="+vend.gettienda().getCodigo_Tienda()+" where DNI='"+dni+"' and rol='Vendedor'";
		
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement update=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			update=bd.prepareStatement(SQL);
			update.executeUpdate();
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
	}
	
	public static Vector<Persona> getVendedor() throws Exception {
		Vector<Persona> result=new Vector<Persona>();
		String SQL="Select * from persona where rol='Vendedor'";
		Conexion bd=null;
		Exception ex=null;
		PreparedStatement p=null;
		try {
			bd=Gestor_bbdd.get().getBD();
			p=bd.prepareStatement(SQL);
			ResultSet r=p.executeQuery();
			while (r.next()) {
				Vendedor vend=new Vendedor();
				vend.setDNI(r.getString("DNI"));
				vend.setNombre(r.getString("nombre"));
				vend.setApellido1(r.getString("apellido1"));
				vend.setApellido2(r.getString("apellido2"));
				vend.setNum_cuenta_corriente(r.getInt("num_cuenta_corriente"));
				vend.setContrasena(r.getString("contrasena"));
				vend.setEmail(r.getString("email"));
				vend.setRol(r.getString("rol"));
				Tienda t=new Tienda();
				t=t.consultTiendaporCodigo(r.getInt("codigo_tienda"));
				vend.settienda(t);
				vend.setHoras_trabajadas(r.getInt("horas_trabajadas"));
				vend.setHoras_seguidas(r.getInt("horas_seguidas"));
				vend.setTurno(r.getString("turno"));
				result.add(vend);
			}			
		}
		catch (Exception e) {
			ex=e;
		}
		finally {
			bd.close();
			if (ex!=null)
				throw ex;
		}
		return result;
	}
}
